--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
RNS/vendor/umsgpack.py 032b1aa3b2808dc5aca0aebada0776c8ee7c6b20 (032b1aa3) Text, 43.45 KB
T8b949e# u-msgpack-python v2.7.1 - v at sergeev.io
T8b949e# https://github.com/vsergeev/u-msgpack-python
T8b949e#
T8b949e# u-msgpack-python is a lightweight MessagePack serializer and deserializer
T8b949e# module, compatible with both Python 2 and 3, as well CPython and PyPy
T8b949e# implementations of Python. u-msgpack-python is fully compliant with the
T8b949e# latest MessagePack specification.com/msgpack/msgpack/blob/master/spec.md). In
T8b949e# particular, it supports the new binary, UTF-8 string, and application ext
T8b949e# types.
T8b949e#
T8b949e# MIT License
T8b949e#
T8b949e# Copyright (c) 2013-2020 vsergeev / Ivan (Vanya) A. Sergeev
T8b949e#
T8b949e# Permission is hereby granted, free of charge, to any person obtaining a copy
T8b949e# of this software and associated documentation files (the "Software"), to deal
T8b949e# in the Software without restriction, including without limitation the rights
T8b949e# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
T8b949e# copies of the Software, and to permit persons to whom the Software is
T8b949e# furnished to do so, subject to the following conditions:
T8b949e#
T8b949e# The above copyright notice and this permission notice shall be included in
T8b949e# all copies or substantial portions of the Software.
T8b949e#
T8b949e# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
T8b949e# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
T8b949e# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
T8b949e# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
T8b949e# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
T8b949e# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
T8b949e# THE SOFTWARE.
T8b949e#
T8b949e"""
u-msgpack-python v2.7.1 - v at sergeev.io
https://github.com/vsergeev/u-msgpack-python
u-msgpack-python is a lightweight MessagePack serializer and deserializer
module, compatible with both Python 2 and 3, as well CPython and PyPy
implementations of Python. u-msgpack-python is fully compliant with the
latest MessagePack specification.com/msgpack/msgpack/blob/master/spec.md). In
particular, it supports the new binary, UTF-8 string, and application ext
types.
License: MIT
"""
Tff7b72import T7ee787struct
Tff7b72import T7ee787collections
Tff7b72import T7ee787datetime
Tff7b72import T7ee787sys
Tff7b72import T7ee787io
Tff7b72if Te6edf3sysTff7b72.Td2a8ffversion_infoTb4b4b4[T79c0ff0Tb4b4b4:T79c0ff2Tb4b4b4] Tff7b72>Tff7b72= Tb4b4b4(T79c0ff3Tb4b4b4, T79c0ff3Tb4b4b4)Tb4b4b4:
Tff7b72from T7ee787collectionsT7ee787.T7ee787abc Tff7b72import Te6edf3Hashable
Tff7b72elseTb4b4b4:
Tff7b72from T7ee787collections Tff7b72import Te6edf3Hashable
Te6edf3__version__ Tff7b72= Ta5d6ff"Ta5d6ff2.7.1Ta5d6ff"
Ta5d6ff"Ta5d6ffModule version stringTa5d6ff"
Te6edf3version Tff7b72= Tb4b4b4(T79c0ff2Tb4b4b4, T79c0ff7Tb4b4b4, T79c0ff1Tb4b4b4)
Ta5d6ff"Ta5d6ffModule version tupleTa5d6ff"
T8b949e##############################################################################
T8b949e# Ext Class
T8b949e##############################################################################
T8b949e# Extension type for application-defined types and data
Tff7b72class T56d364ExtTb4b4b4(Tffa657objectTb4b4b4)Tb4b4b4:
T8b949e"""
The Ext class facilitates creating a serializable extension object to store
an application-defined type and data byte array.
"""
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Tffa657typeTb4b4b4, Te6edf3dataTb4b4b4)Tb4b4b4:
T8b949e"""
Construct a new Ext object.
Args:
type: application-defined type integer
data: application-defined data byte array
TypeError:
Type is not an integer.
ValueError:
Type is out of range of -128 to 127.
TypeError::
Data is not type 'bytes' (Python 3) or not type 'str' (Python 2).
Example:
>>> foo = umsgpack.Ext(5, b"\x01\x02\x03")
>>> umsgpack.packb({u"special stuff": foo, u"awesome": True})
'\x82\xa7awesome\xc3\xadspecial stuff\xc7\x03\x05\x01\x02\x03'
>>> bar = umsgpack.unpackb(_)
>>> print(bar["special stuff"])
Ext Object (Type: 5, Data: 01 02 03)
>>>
"""
T8b949e# Check type is type int and in range
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Tffa657typeTb4b4b4, Tffa657intTb4b4b4)Tb4b4b4:
Tff7b72raise Tf85149TypeErrorTb4b4b4(Ta5d6ff"Ta5d6ffext type is not type integerTa5d6ff"Tb4b4b4)
Tff7b72elif Tff7b72not Tb4b4b4(Tff7b72-T79c0ff2Tff7b72*Tff7b72*T79c0ff7 Tff7b72<Tff7b72= Tffa657type Tff7b72<Tff7b72= T79c0ff2Tff7b72*Tff7b72*T79c0ff7 Tff7b72- T79c0ff1Tb4b4b4)Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffext type value Tffd700{:d}Ta5d6ff is out of range (-128 to 127)Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657typeTb4b4b4)Tb4b4b4)
T8b949e# Check data is type bytes or str
Tff7b72elif Te6edf3sysTff7b72.Td2a8ffversion_infoTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72== T79c0ff3 Tff7b72and Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3dataTb4b4b4, Tffa657bytesTb4b4b4)Tb4b4b4:
Tff7b72raise Tf85149TypeErrorTb4b4b4(Ta5d6ff"Ta5d6ffext data is not type Tffea00\'Ta5d6ffbytesTffea00\'Ta5d6ff"Tb4b4b4)
Tff7b72elif Te6edf3sysTff7b72.Td2a8ffversion_infoTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72== T79c0ff2 Tff7b72and Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3dataTb4b4b4, Tffa657strTb4b4b4)Tb4b4b4:
Tff7b72raise Tf85149TypeErrorTb4b4b4(Ta5d6ff"Ta5d6ffext data is not type Tffea00\'Ta5d6ffstrTffea00\'Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fftype Tff7b72= Tffa657type
Tff7b72selfTff7b72.Td2a8ffdata Tff7b72= Te6edf3data
Tff7b72def Tff7b72__eq__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3otherTb4b4b4)Tb4b4b4:
T8b949e"""
Compare this Ext object with another for equality.
"""
Tff7b72return Tffa657isinstanceTb4b4b4(Te6edf3otherTb4b4b4, Tff7b72selfTff7b72.Td2a8ff__class__Tb4b4b4) \
Tff7b72and Tff7b72selfTff7b72.Td2a8fftype Tff7b72== Te6edf3otherTff7b72.Td2a8fftype Tff7b72and Tff7b72selfTff7b72.Td2a8ffdata Tff7b72== Te6edf3otherTff7b72.Td2a8ffdata
Tff7b72def Tff7b72__ne__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3otherTb4b4b4)Tb4b4b4:
T8b949e"""
Compare this Ext object with another for inequality.
"""
Tff7b72return Tff7b72not Tff7b72selfTff7b72.Td2a8ff__eq__Tb4b4b4(Te6edf3otherTb4b4b4)
Tff7b72def Tff7b72__str__Tb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e"""
String representation of this Ext object.
"""
Te6edf3s Tff7b72= Ta5d6ff"Ta5d6ffExt Object (Type: Tffd700{:d}Ta5d6ff, Data: Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tff7b72selfTff7b72.Td2a8fftypeTb4b4b4)
Te6edf3s Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff Ta5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Tb4b4b4[Ta5d6ff"Ta5d6ff0xTffd700{:02}Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657ordTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdataTb4b4b4[Te6edf3iTb4b4b4:Te6edf3i Tff7b72+ T79c0ff1Tb4b4b4]Tb4b4b4)Tb4b4b4)
Tff7b72for Te6edf3i Tff7b72in Te6edf3xrangeTb4b4b4(Tffa657minTb4b4b4(Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdataTb4b4b4)Tb4b4b4, T79c0ff8Tb4b4b4)Tb4b4b4)Tb4b4b4]Tb4b4b4)
Tff7b72if Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdataTb4b4b4) Tff7b72> T79c0ff8Tb4b4b4:
Te6edf3s Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff ...Ta5d6ff"
Te6edf3s Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff)Ta5d6ff"
Tff7b72return Te6edf3s
Tff7b72def Tff7b72__hash__Tb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e"""
Provide a hash of this Ext object.
"""
Tff7b72return Tffa657hashTb4b4b4(Tb4b4b4(Tff7b72selfTff7b72.Td2a8fftypeTb4b4b4, Tff7b72selfTff7b72.Td2a8ffdataTb4b4b4)Tb4b4b4)
Tff7b72class T56d364InvalidStringTb4b4b4(Tffa657bytesTb4b4b4)Tb4b4b4:
T8b949e"""Subclass of bytes to hold invalid UTF-8 strings."""
T8b949e##############################################################################
T8b949e# Ext Serializable Decorator
T8b949e##############################################################################
Te6edf3_ext_class_to_type Tff7b72= Tb4b4b4{Tb4b4b4}
Te6edf3_ext_type_to_class Tff7b72= Tb4b4b4{Tb4b4b4}
Tff7b72def Td2a8ffext_serializableTb4b4b4(Te6edf3ext_typeTb4b4b4)Tb4b4b4:
T8b949e"""
Return a decorator to register a class for automatic packing and unpacking
with the specified Ext type code. The application class should implement a
`packb()` method that returns serialized bytes, and an `unpackb()` class
method or static method that accepts serialized bytes and returns an
instance of the application class.
Args:
ext_type: application-defined Ext type code
Raises:
TypeError:
Ext type is not an integer.
ValueError:
Ext type is out of range of -128 to 127.
ValueError:
Ext type or class already registered.
"""
Tff7b72def Td2a8ffwrapperTb4b4b4(Tff7b72clsTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3ext_typeTb4b4b4, Tffa657intTb4b4b4)Tb4b4b4:
Tff7b72raise Tf85149TypeErrorTb4b4b4(Ta5d6ff"Ta5d6ffExt type is not type integerTa5d6ff"Tb4b4b4)
Tff7b72elif Tff7b72not Tb4b4b4(Tff7b72-T79c0ff2Tff7b72*Tff7b72*T79c0ff7 Tff7b72<Tff7b72= Te6edf3ext_type Tff7b72<Tff7b72= T79c0ff2Tff7b72*Tff7b72*T79c0ff7 Tff7b72- T79c0ff1Tb4b4b4)Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffExt type value Tffd700{:d}Ta5d6ff is out of range of -128 to 127Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Te6edf3ext_typeTb4b4b4)Tb4b4b4)
Tff7b72elif Te6edf3ext_type Tff7b72in Te6edf3_ext_type_to_classTb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffExt type Tffd700{:d}Ta5d6ff already registered with class Tffd700{:s}Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Te6edf3ext_typeTb4b4b4, Tffa657reprTb4b4b4(Te6edf3_ext_type_to_classTb4b4b4[Te6edf3ext_typeTb4b4b4]Tb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72elif Tff7b72cls Tff7b72in Te6edf3_ext_class_to_typeTb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffClass Tffd700{:s}Ta5d6ff already registered with Ext type Tffd700{:d}Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657reprTb4b4b4(Tff7b72clsTb4b4b4)Tb4b4b4, Te6edf3ext_typeTb4b4b4)Tb4b4b4)
Te6edf3_ext_type_to_classTb4b4b4[Te6edf3ext_typeTb4b4b4] Tff7b72= Tff7b72cls
Te6edf3_ext_class_to_typeTb4b4b4[Tff7b72clsTb4b4b4] Tff7b72= Te6edf3ext_type
Tff7b72return Tff7b72cls
Tff7b72return Te6edf3wrapper
T8b949e##############################################################################
T8b949e# Exceptions
T8b949e##############################################################################
T8b949e# Base Exception classes
Tff7b72class T56d364PackExceptionTb4b4b4(Tf85149ExceptionTb4b4b4)Tb4b4b4:
Ta5d6ff"Ta5d6ffBase class for exceptions encountered during packing.Ta5d6ff"
Tff7b72class T56d364UnpackExceptionTb4b4b4(Tf85149ExceptionTb4b4b4)Tb4b4b4:
Ta5d6ff"Ta5d6ffBase class for exceptions encountered during unpacking.Ta5d6ff"
T8b949e# Packing error
Tff7b72class T56d364UnsupportedTypeExceptionTb4b4b4(Te6edf3PackExceptionTb4b4b4)Tb4b4b4:
Ta5d6ff"Ta5d6ffObject type not supported for packing.Ta5d6ff"
T8b949e# Unpacking error
Tff7b72class T56d364InsufficientDataExceptionTb4b4b4(Te6edf3UnpackExceptionTb4b4b4)Tb4b4b4:
Ta5d6ff"Ta5d6ffInsufficient data to unpack the serialized object.Ta5d6ff"
Tff7b72class T56d364InvalidStringExceptionTb4b4b4(Te6edf3UnpackExceptionTb4b4b4)Tb4b4b4:
Ta5d6ff"Ta5d6ffInvalid UTF-8 string encountered during unpacking.Ta5d6ff"
Tff7b72class T56d364UnsupportedTimestampExceptionTb4b4b4(Te6edf3UnpackExceptionTb4b4b4)Tb4b4b4:
Ta5d6ff"Ta5d6ffUnsupported timestamp format encountered during unpacking.Ta5d6ff"
Tff7b72class T56d364ReservedCodeExceptionTb4b4b4(Te6edf3UnpackExceptionTb4b4b4)Tb4b4b4:
Ta5d6ff"Ta5d6ffReserved code encountered during unpacking.Ta5d6ff"
Tff7b72class T56d364UnhashableKeyExceptionTb4b4b4(Te6edf3UnpackExceptionTb4b4b4)Tb4b4b4:
T8b949e"""
Unhashable key encountered during map unpacking.
The serialized map cannot be deserialized into a Python dictionary.
"""
Tff7b72class T56d364DuplicateKeyExceptionTb4b4b4(Te6edf3UnpackExceptionTb4b4b4)Tb4b4b4:
Ta5d6ff"Ta5d6ffDuplicate key encountered during map unpacking.Ta5d6ff"
T8b949e# Backwards compatibility
Te6edf3KeyNotPrimitiveException Tff7b72= Te6edf3UnhashableKeyException
Te6edf3KeyDuplicateException Tff7b72= Te6edf3DuplicateKeyException
T8b949e#############################################################################
T8b949e# Exported Functions and Glob
T8b949e#############################################################################
T8b949e# Exported functions and variables, set up in __init()
Te6edf3pack Tff7b72= Tff7b72None
Te6edf3packb Tff7b72= Tff7b72None
Te6edf3unpack Tff7b72= Tff7b72None
Te6edf3unpackb Tff7b72= Tff7b72None
Te6edf3dump Tff7b72= Tff7b72None
Te6edf3dumps Tff7b72= Tff7b72None
Te6edf3load Tff7b72= Tff7b72None
Te6edf3loads Tff7b72= Tff7b72None
Te6edf3compatibility Tff7b72= Tff7b72False
T8b949e"""
Compatibility mode boolean.
When compatibility mode is enabled, u-msgpack-python will serialize both
unicode strings and bytes into the old "raw" msgpack type, and deserialize the
"raw" msgpack type into bytes. This provides backwards compatibility with the
old MessagePack specification.
Example:
umsgpack.compatibility = True
umsgpack.packb([u"some string", b"some bytes"])
b'\x92\xabsome string\xaasome bytes'
umsgpack.unpackb(_)
[b'some string', b'some bytes']
"""
T8b949e##############################################################################
T8b949e# Packing
T8b949e##############################################################################
T8b949e# You may notice struct.pack("B", obj) instead of the simpler chr(obj) in the
T8b949e# code below. This is to allow for seamless Python 2 and 3 compatibility, as
T8b949e# chr(obj) has a str return type instead of bytes in Python 3, and
T8b949e# struct.pack(...) has the right return type in both versions.
Tff7b72def Td2a8ff_pack_integerTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3obj Tff7b72< T79c0ff0Tb4b4b4:
Tff7b72if Te6edf3obj Tff7b72>Tff7b72= Tff7b72-T79c0ff32Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffbTa5d6ff"Tb4b4b4, Te6edf3objTb4b4b4)Tb4b4b4)
Tff7b72elif Te6edf3obj Tff7b72>Tff7b72= Tff7b72-T79c0ff2Tff7b72*Tff7b72*Tb4b4b4(T79c0ff8 Tff7b72- T79c0ff1Tb4b4b4)Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xd0Ta5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffbTa5d6ff"Tb4b4b4, Te6edf3objTb4b4b4)Tb4b4b4)
Tff7b72elif Te6edf3obj Tff7b72>Tff7b72= Tff7b72-T79c0ff2Tff7b72*Tff7b72*Tb4b4b4(T79c0ff16 Tff7b72- T79c0ff1Tb4b4b4)Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xd1Ta5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ff>hTa5d6ff"Tb4b4b4, Te6edf3objTb4b4b4)Tb4b4b4)
Tff7b72elif Te6edf3obj Tff7b72>Tff7b72= Tff7b72-T79c0ff2Tff7b72*Tff7b72*Tb4b4b4(T79c0ff32 Tff7b72- T79c0ff1Tb4b4b4)Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xd2Ta5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ff>iTa5d6ff"Tb4b4b4, Te6edf3objTb4b4b4)Tb4b4b4)
Tff7b72elif Te6edf3obj Tff7b72>Tff7b72= Tff7b72-T79c0ff2Tff7b72*Tff7b72*Tb4b4b4(T79c0ff64 Tff7b72- T79c0ff1Tb4b4b4)Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xd3Ta5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ff>qTa5d6ff"Tb4b4b4, Te6edf3objTb4b4b4)Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72raise Te6edf3UnsupportedTypeExceptionTb4b4b4(Ta5d6ff"Ta5d6ffhuge signed intTa5d6ff"Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72if Te6edf3obj Tff7b72< T79c0ff128Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3objTb4b4b4)Tb4b4b4)
Tff7b72elif Te6edf3obj Tff7b72< T79c0ff2Tff7b72*Tff7b72*T79c0ff8Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xccTa5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3objTb4b4b4)Tb4b4b4)
Tff7b72elif Te6edf3obj Tff7b72< T79c0ff2Tff7b72*Tff7b72*T79c0ff16Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xcdTa5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ff>HTa5d6ff"Tb4b4b4, Te6edf3objTb4b4b4)Tb4b4b4)
Tff7b72elif Te6edf3obj Tff7b72< T79c0ff2Tff7b72*Tff7b72*T79c0ff32Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xceTa5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ff>ITa5d6ff"Tb4b4b4, Te6edf3objTb4b4b4)Tb4b4b4)
Tff7b72elif Te6edf3obj Tff7b72< T79c0ff2Tff7b72*Tff7b72*T79c0ff64Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xcfTa5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ff>QTa5d6ff"Tb4b4b4, Te6edf3objTb4b4b4)Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72raise Te6edf3UnsupportedTypeExceptionTb4b4b4(Ta5d6ff"Ta5d6ffhuge unsigned intTa5d6ff"Tb4b4b4)
Tff7b72def Td2a8ff_pack_nilTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xc0Ta5d6ff"Tb4b4b4)
Tff7b72def Td2a8ff_pack_booleanTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xc3Ta5d6ff" Tff7b72if Te6edf3obj Tff7b72else Ta5d6ffbTa5d6ff"Tffea00\xc2Ta5d6ff"Tb4b4b4)
Tff7b72def Td2a8ff_pack_floatTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4:
Te6edf3float_precision Tff7b72= Te6edf3optionsTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff'Ta5d6ffforce_float_precisionTa5d6ff'Tb4b4b4, Te6edf3_float_precisionTb4b4b4)
Tff7b72if Te6edf3float_precision Tff7b72== Ta5d6ff"Ta5d6ffdoubleTa5d6ff"Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xcbTa5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ff>dTa5d6ff"Tb4b4b4, Te6edf3objTb4b4b4)Tb4b4b4)
Tff7b72elif Te6edf3float_precision Tff7b72== Ta5d6ff"Ta5d6ffsingleTa5d6ff"Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xcaTa5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ff>fTa5d6ff"Tb4b4b4, Te6edf3objTb4b4b4)Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffinvalid float precisionTa5d6ff"Tb4b4b4)
Tff7b72def Td2a8ff_pack_stringTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4:
Te6edf3obj Tff7b72= Te6edf3objTff7b72.Td2a8ffencodeTb4b4b4(Ta5d6ff'Ta5d6ffutf-8Ta5d6ff'Tb4b4b4)
Te6edf3obj_len Tff7b72= Tffa657lenTb4b4b4(Te6edf3objTb4b4b4)
Tff7b72if Te6edf3obj_len Tff7b72< T79c0ff32Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, T79c0ff0xa0 Tff7b72| Te6edf3obj_lenTb4b4b4) Tff7b72+ Te6edf3objTb4b4b4)
Tff7b72elif Te6edf3obj_len Tff7b72< T79c0ff2Tff7b72*Tff7b72*T79c0ff8Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xd9Ta5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3obj_lenTb4b4b4) Tff7b72+ Te6edf3objTb4b4b4)
Tff7b72elif Te6edf3obj_len Tff7b72< T79c0ff2Tff7b72*Tff7b72*T79c0ff16Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xdaTa5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ff>HTa5d6ff"Tb4b4b4, Te6edf3obj_lenTb4b4b4) Tff7b72+ Te6edf3objTb4b4b4)
Tff7b72elif Te6edf3obj_len Tff7b72< T79c0ff2Tff7b72*Tff7b72*T79c0ff32Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xdbTa5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ff>ITa5d6ff"Tb4b4b4, Te6edf3obj_lenTb4b4b4) Tff7b72+ Te6edf3objTb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72raise Te6edf3UnsupportedTypeExceptionTb4b4b4(Ta5d6ff"Ta5d6ffhuge stringTa5d6ff"Tb4b4b4)
Tff7b72def Td2a8ff_pack_binaryTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4:
Te6edf3obj_len Tff7b72= Tffa657lenTb4b4b4(Te6edf3objTb4b4b4)
Tff7b72if Te6edf3obj_len Tff7b72< T79c0ff2Tff7b72*Tff7b72*T79c0ff8Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xc4Ta5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3obj_lenTb4b4b4) Tff7b72+ Te6edf3objTb4b4b4)
Tff7b72elif Te6edf3obj_len Tff7b72< T79c0ff2Tff7b72*Tff7b72*T79c0ff16Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xc5Ta5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ff>HTa5d6ff"Tb4b4b4, Te6edf3obj_lenTb4b4b4) Tff7b72+ Te6edf3objTb4b4b4)
Tff7b72elif Te6edf3obj_len Tff7b72< T79c0ff2Tff7b72*Tff7b72*T79c0ff32Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xc6Ta5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ff>ITa5d6ff"Tb4b4b4, Te6edf3obj_lenTb4b4b4) Tff7b72+ Te6edf3objTb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72raise Te6edf3UnsupportedTypeExceptionTb4b4b4(Ta5d6ff"Ta5d6ffhuge binary stringTa5d6ff"Tb4b4b4)
Tff7b72def Td2a8ff_pack_oldspec_rawTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4:
Te6edf3obj_len Tff7b72= Tffa657lenTb4b4b4(Te6edf3objTb4b4b4)
Tff7b72if Te6edf3obj_len Tff7b72< T79c0ff32Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, T79c0ff0xa0 Tff7b72| Te6edf3obj_lenTb4b4b4) Tff7b72+ Te6edf3objTb4b4b4)
Tff7b72elif Te6edf3obj_len Tff7b72< T79c0ff2Tff7b72*Tff7b72*T79c0ff16Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xdaTa5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ff>HTa5d6ff"Tb4b4b4, Te6edf3obj_lenTb4b4b4) Tff7b72+ Te6edf3objTb4b4b4)
Tff7b72elif Te6edf3obj_len Tff7b72< T79c0ff2Tff7b72*Tff7b72*T79c0ff32Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xdbTa5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ff>ITa5d6ff"Tb4b4b4, Te6edf3obj_lenTb4b4b4) Tff7b72+ Te6edf3objTb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72raise Te6edf3UnsupportedTypeExceptionTb4b4b4(Ta5d6ff"Ta5d6ffhuge raw stringTa5d6ff"Tb4b4b4)
Tff7b72def Td2a8ff_pack_extTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4:
Te6edf3obj_len Tff7b72= Tffa657lenTb4b4b4(Te6edf3objTff7b72.Td2a8ffdataTb4b4b4)
Tff7b72if Te6edf3obj_len Tff7b72== T79c0ff1Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xd4Ta5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3objTff7b72.Td2a8fftype Tff7b72& T79c0ff0xffTb4b4b4) Tff7b72+ Te6edf3objTff7b72.Td2a8ffdataTb4b4b4)
Tff7b72elif Te6edf3obj_len Tff7b72== T79c0ff2Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xd5Ta5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3objTff7b72.Td2a8fftype Tff7b72& T79c0ff0xffTb4b4b4) Tff7b72+ Te6edf3objTff7b72.Td2a8ffdataTb4b4b4)
Tff7b72elif Te6edf3obj_len Tff7b72== T79c0ff4Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xd6Ta5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3objTff7b72.Td2a8fftype Tff7b72& T79c0ff0xffTb4b4b4) Tff7b72+ Te6edf3objTff7b72.Td2a8ffdataTb4b4b4)
Tff7b72elif Te6edf3obj_len Tff7b72== T79c0ff8Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xd7Ta5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3objTff7b72.Td2a8fftype Tff7b72& T79c0ff0xffTb4b4b4) Tff7b72+ Te6edf3objTff7b72.Td2a8ffdataTb4b4b4)
Tff7b72elif Te6edf3obj_len Tff7b72== T79c0ff16Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xd8Ta5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3objTff7b72.Td2a8fftype Tff7b72& T79c0ff0xffTb4b4b4) Tff7b72+ Te6edf3objTff7b72.Td2a8ffdataTb4b4b4)
Tff7b72elif Te6edf3obj_len Tff7b72< T79c0ff2Tff7b72*Tff7b72*T79c0ff8Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xc7Ta5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBBTa5d6ff"Tb4b4b4, Te6edf3obj_lenTb4b4b4, Te6edf3objTff7b72.Td2a8fftype Tff7b72& T79c0ff0xffTb4b4b4) Tff7b72+ Te6edf3objTff7b72.Td2a8ffdataTb4b4b4)
Tff7b72elif Te6edf3obj_len Tff7b72< T79c0ff2Tff7b72*Tff7b72*T79c0ff16Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xc8Ta5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ff>HBTa5d6ff"Tb4b4b4, Te6edf3obj_lenTb4b4b4, Te6edf3objTff7b72.Td2a8fftype Tff7b72& T79c0ff0xffTb4b4b4) Tff7b72+ Te6edf3objTff7b72.Td2a8ffdataTb4b4b4)
Tff7b72elif Te6edf3obj_len Tff7b72< T79c0ff2Tff7b72*Tff7b72*T79c0ff32Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xc9Ta5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ff>IBTa5d6ff"Tb4b4b4, Te6edf3obj_lenTb4b4b4, Te6edf3objTff7b72.Td2a8fftype Tff7b72& T79c0ff0xffTb4b4b4) Tff7b72+ Te6edf3objTff7b72.Td2a8ffdataTb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72raise Te6edf3UnsupportedTypeExceptionTb4b4b4(Ta5d6ff"Ta5d6ffhuge ext dataTa5d6ff"Tb4b4b4)
Tff7b72def Td2a8ff_pack_ext_timestampTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Te6edf3objTff7b72.Td2a8fftzinfoTb4b4b4:
T8b949e# Object is naive datetime, convert to aware date time,
T8b949e# assuming UTC timezone
Te6edf3delta Tff7b72= Te6edf3objTff7b72.Td2a8ffreplaceTb4b4b4(Te6edf3tzinfoTff7b72=Te6edf3_utc_tzinfoTb4b4b4) Tff7b72- Te6edf3_epoch
Tff7b72elseTb4b4b4:
T8b949e# Object is aware datetime
Te6edf3delta Tff7b72= Te6edf3obj Tff7b72- Te6edf3_epoch
Te6edf3seconds Tff7b72= Te6edf3deltaTff7b72.Td2a8ffseconds Tff7b72+ Te6edf3deltaTff7b72.Td2a8ffdays Tff7b72* T79c0ff86400
Te6edf3microseconds Tff7b72= Te6edf3deltaTff7b72.Td2a8ffmicroseconds
Tff7b72if Te6edf3microseconds Tff7b72== T79c0ff0 Tff7b72and T79c0ff0 Tff7b72<Tff7b72= Te6edf3seconds Tff7b72<Tff7b72= T79c0ff2Tff7b72*Tff7b72*T79c0ff32 Tff7b72- T79c0ff1Tb4b4b4:
T8b949e# 32-bit timestamp
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xd6Tffea00\xffTa5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ff>ITa5d6ff"Tb4b4b4, Te6edf3secondsTb4b4b4)Tb4b4b4)
Tff7b72elif T79c0ff0 Tff7b72<Tff7b72= Te6edf3seconds Tff7b72<Tff7b72= T79c0ff2Tff7b72*Tff7b72*T79c0ff34 Tff7b72- T79c0ff1Tb4b4b4:
T8b949e# 64-bit timestamp
Te6edf3value Tff7b72= Tb4b4b4(Tb4b4b4(Te6edf3microseconds Tff7b72* T79c0ff1000Tb4b4b4) Tff7b72<< T79c0ff34Tb4b4b4) Tff7b72| Te6edf3seconds
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xd7Tffea00\xffTa5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ff>QTa5d6ff"Tb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4)
Tff7b72elif Tff7b72-T79c0ff2Tff7b72*Tff7b72*T79c0ff63 Tff7b72<Tff7b72= Tffa657absTb4b4b4(Te6edf3secondsTb4b4b4) Tff7b72<Tff7b72= T79c0ff2Tff7b72*Tff7b72*T79c0ff63 Tff7b72- T79c0ff1Tb4b4b4:
T8b949e# 96-bit timestamp
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xc7Tffea00\x0cTffea00\xffTa5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ff>IqTa5d6ff"Tb4b4b4, Te6edf3microseconds Tff7b72* T79c0ff1000Tb4b4b4, Te6edf3secondsTb4b4b4)Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72raise Te6edf3UnsupportedTypeExceptionTb4b4b4(Ta5d6ff"Ta5d6ffhuge timestampTa5d6ff"Tb4b4b4)
Tff7b72def Td2a8ff_pack_arrayTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4:
Te6edf3obj_len Tff7b72= Tffa657lenTb4b4b4(Te6edf3objTb4b4b4)
Tff7b72if Te6edf3obj_len Tff7b72< T79c0ff16Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, T79c0ff0x90 Tff7b72| Te6edf3obj_lenTb4b4b4)Tb4b4b4)
Tff7b72elif Te6edf3obj_len Tff7b72< T79c0ff2Tff7b72*Tff7b72*T79c0ff16Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xdcTa5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ff>HTa5d6ff"Tb4b4b4, Te6edf3obj_lenTb4b4b4)Tb4b4b4)
Tff7b72elif Te6edf3obj_len Tff7b72< T79c0ff2Tff7b72*Tff7b72*T79c0ff32Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xddTa5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ff>ITa5d6ff"Tb4b4b4, Te6edf3obj_lenTb4b4b4)Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72raise Te6edf3UnsupportedTypeExceptionTb4b4b4(Ta5d6ff"Ta5d6ffhuge arrayTa5d6ff"Tb4b4b4)
Tff7b72for Te6edf3e Tff7b72in Te6edf3objTb4b4b4:
Te6edf3packTb4b4b4(Te6edf3eTb4b4b4, Te6edf3fpTb4b4b4, Tff7b72*Tff7b72*Te6edf3optionsTb4b4b4)
Tff7b72def Td2a8ff_pack_mapTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4:
Te6edf3obj_len Tff7b72= Tffa657lenTb4b4b4(Te6edf3objTb4b4b4)
Tff7b72if Te6edf3obj_len Tff7b72< T79c0ff16Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, T79c0ff0x80 Tff7b72| Te6edf3obj_lenTb4b4b4)Tb4b4b4)
Tff7b72elif Te6edf3obj_len Tff7b72< T79c0ff2Tff7b72*Tff7b72*T79c0ff16Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xdeTa5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ff>HTa5d6ff"Tb4b4b4, Te6edf3obj_lenTb4b4b4)Tb4b4b4)
Tff7b72elif Te6edf3obj_len Tff7b72< T79c0ff2Tff7b72*Tff7b72*T79c0ff32Tb4b4b4:
Te6edf3fpTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xdfTa5d6ff" Tff7b72+ Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ff>ITa5d6ff"Tb4b4b4, Te6edf3obj_lenTb4b4b4)Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72raise Te6edf3UnsupportedTypeExceptionTb4b4b4(Ta5d6ff"Ta5d6ffhuge arrayTa5d6ff"Tb4b4b4)
Tff7b72for Te6edf3kTb4b4b4, Te6edf3v Tff7b72in Te6edf3objTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3packTb4b4b4(Te6edf3kTb4b4b4, Te6edf3fpTb4b4b4, Tff7b72*Tff7b72*Te6edf3optionsTb4b4b4)
Te6edf3packTb4b4b4(Te6edf3vTb4b4b4, Te6edf3fpTb4b4b4, Tff7b72*Tff7b72*Te6edf3optionsTb4b4b4)
T8b949e########################################
T8b949e# Pack for Python 2, with 'unicode' type, 'str' type, and 'long' type
Tff7b72def Td2a8ff_pack2Tb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Tff7b72*Tff7b72*Te6edf3optionsTb4b4b4)Tb4b4b4:
T8b949e"""
Serialize a Python object into MessagePack bytes.
Args:
obj: a Python object
fp: a .write()-supporting file-like object
Kwargs:
ext_handlers (dict): dictionary of Ext handlers, mapping a custom type
to a callable that packs an instance of the type
into an Ext object
force_float_precision (str): "single" to force packing floats as
IEEE-754 single-precision floats,
"double" to force packing floats as
IEEE-754 double-precision floats.
Returns:
None.
Raises:
UnsupportedType(PackException):
Object type not supported for packing.
Example:
>>> f = open('test.bin', 'wb')
>>> umsgpack.pack({u"compact": True, u"schema": 0}, f)
>>>
"""
Tff7b72global Te6edf3compatibility
Te6edf3ext_handlers Tff7b72= Te6edf3optionsTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffext_handlersTa5d6ff"Tb4b4b4)
Tff7b72if Te6edf3obj Tff7b72is Tff7b72NoneTb4b4b4:
Te6edf3_pack_nilTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Te6edf3ext_handlers Tff7b72and Te6edf3objTff7b72.Td2a8ff__class__ Tff7b72in Te6edf3ext_handlersTb4b4b4:
Te6edf3_pack_extTb4b4b4(Te6edf3ext_handlersTb4b4b4[Te6edf3objTff7b72.Td2a8ff__class__Tb4b4b4]Tb4b4b4(Te6edf3objTb4b4b4)Tb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Te6edf3objTff7b72.Td2a8ff__class__ Tff7b72in Te6edf3_ext_class_to_typeTb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3_pack_extTb4b4b4(Te6edf3ExtTb4b4b4(Te6edf3_ext_class_to_typeTb4b4b4[Te6edf3objTff7b72.Td2a8ff__class__Tb4b4b4]Tb4b4b4, Te6edf3objTff7b72.Td2a8ffpackbTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72except Tf85149AttributeErrorTb4b4b4:
Tff7b72raise Tf85149NotImplementedErrorTb4b4b4(Ta5d6ff"Ta5d6ffExt serializable class Tffd700{:s}Ta5d6ff is missing implementation of packb()Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657reprTb4b4b4(Te6edf3objTff7b72.Td2a8ff__class__Tb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72elif Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Tffa657boolTb4b4b4)Tb4b4b4:
Te6edf3_pack_booleanTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Tb4b4b4(Tffa657intTb4b4b4, Te6edf3longTb4b4b4)Tb4b4b4)Tb4b4b4:
Te6edf3_pack_integerTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Tffa657floatTb4b4b4)Tb4b4b4:
Te6edf3_pack_floatTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Te6edf3compatibility Tff7b72and Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Te6edf3unicodeTb4b4b4)Tb4b4b4:
Te6edf3_pack_oldspec_rawTb4b4b4(Tffa657bytesTb4b4b4(Te6edf3objTb4b4b4)Tb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Te6edf3compatibility Tff7b72and Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Tffa657bytesTb4b4b4)Tb4b4b4:
Te6edf3_pack_oldspec_rawTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Te6edf3unicodeTb4b4b4)Tb4b4b4:
Te6edf3_pack_stringTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Tffa657strTb4b4b4)Tb4b4b4:
Te6edf3_pack_binaryTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Tb4b4b4(Tffa657listTb4b4b4, Tffa657tupleTb4b4b4)Tb4b4b4)Tb4b4b4:
Te6edf3_pack_arrayTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4:
Te6edf3_pack_mapTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Te6edf3datetimeTff7b72.Td2a8ffdatetimeTb4b4b4)Tb4b4b4:
Te6edf3_pack_ext_timestampTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Te6edf3ExtTb4b4b4)Tb4b4b4:
Te6edf3_pack_extTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Te6edf3ext_handlersTb4b4b4:
T8b949e# Linear search for superclass
Te6edf3t Tff7b72= Tffa657nextTb4b4b4(Tb4b4b4(Te6edf3t Tff7b72for Te6edf3t Tff7b72in Te6edf3ext_handlersTff7b72.Td2a8ffkeysTb4b4b4(Tb4b4b4) Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Te6edf3tTb4b4b4)Tb4b4b4)Tb4b4b4, Tff7b72NoneTb4b4b4)
Tff7b72if Te6edf3tTb4b4b4:
Te6edf3_pack_extTb4b4b4(Te6edf3ext_handlersTb4b4b4[Te6edf3tTb4b4b4]Tb4b4b4(Te6edf3objTb4b4b4)Tb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72raise Te6edf3UnsupportedTypeExceptionTb4b4b4(
Ta5d6ff"Ta5d6ffunsupported type: Tffd700{:s}Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657strTb4b4b4(Tffa657typeTb4b4b4(Te6edf3objTb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72elif Te6edf3_ext_class_to_typeTb4b4b4:
T8b949e# Linear search for superclass
Te6edf3t Tff7b72= Tffa657nextTb4b4b4(Tb4b4b4(Te6edf3t Tff7b72for Te6edf3t Tff7b72in Te6edf3_ext_class_to_type Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Te6edf3tTb4b4b4)Tb4b4b4)Tb4b4b4, Tff7b72NoneTb4b4b4)
Tff7b72if Te6edf3tTb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3_pack_extTb4b4b4(Te6edf3ExtTb4b4b4(Te6edf3_ext_class_to_typeTb4b4b4[Te6edf3tTb4b4b4]Tb4b4b4, Te6edf3objTff7b72.Td2a8ffpackbTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72except Tf85149AttributeErrorTb4b4b4:
Tff7b72raise Tf85149NotImplementedErrorTb4b4b4(Ta5d6ff"Ta5d6ffExt serializable class Tffd700{:s}Ta5d6ff is missing implementation of packb()Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657reprTb4b4b4(Te6edf3tTb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72raise Te6edf3UnsupportedTypeExceptionTb4b4b4(Ta5d6ff"Ta5d6ffunsupported type: Tffd700{:s}Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657strTb4b4b4(Tffa657typeTb4b4b4(Te6edf3objTb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72raise Te6edf3UnsupportedTypeExceptionTb4b4b4(Ta5d6ff"Ta5d6ffunsupported type: Tffd700{:s}Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657strTb4b4b4(Tffa657typeTb4b4b4(Te6edf3objTb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4)
T8b949e# Pack for Python 3, with unicode 'str' type, 'bytes' type, and no 'long' type
Tff7b72def Td2a8ff_pack3Tb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Tff7b72*Tff7b72*Te6edf3optionsTb4b4b4)Tb4b4b4:
T8b949e"""
Serialize a Python object into MessagePack bytes.
Args:
obj: a Python object
fp: a .write()-supporting file-like object
Kwargs:
ext_handlers (dict): dictionary of Ext handlers, mapping a custom type
to a callable that packs an instance of the type
into an Ext object
force_float_precision (str): "single" to force packing floats as
IEEE-754 single-precision floats,
"double" to force packing floats as
IEEE-754 double-precision floats.
Returns:
None.
Raises:
UnsupportedType(PackException):
Object type not supported for packing.
Example:
>>> f = open('test.bin', 'wb')
>>> umsgpack.pack({u"compact": True, u"schema": 0}, f)
>>>
"""
Tff7b72global Te6edf3compatibility
Te6edf3ext_handlers Tff7b72= Te6edf3optionsTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffext_handlersTa5d6ff"Tb4b4b4)
Tff7b72if Te6edf3obj Tff7b72is Tff7b72NoneTb4b4b4:
Te6edf3_pack_nilTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Te6edf3ext_handlers Tff7b72and Te6edf3objTff7b72.Td2a8ff__class__ Tff7b72in Te6edf3ext_handlersTb4b4b4:
Te6edf3_pack_extTb4b4b4(Te6edf3ext_handlersTb4b4b4[Te6edf3objTff7b72.Td2a8ff__class__Tb4b4b4]Tb4b4b4(Te6edf3objTb4b4b4)Tb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Te6edf3objTff7b72.Td2a8ff__class__ Tff7b72in Te6edf3_ext_class_to_typeTb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3_pack_extTb4b4b4(Te6edf3ExtTb4b4b4(Te6edf3_ext_class_to_typeTb4b4b4[Te6edf3objTff7b72.Td2a8ff__class__Tb4b4b4]Tb4b4b4, Te6edf3objTff7b72.Td2a8ffpackbTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72except Tf85149AttributeErrorTb4b4b4:
Tff7b72raise Tf85149NotImplementedErrorTb4b4b4(Ta5d6ff"Ta5d6ffExt serializable class Tffd700{:s}Ta5d6ff is missing implementation of packb()Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657reprTb4b4b4(Te6edf3objTff7b72.Td2a8ff__class__Tb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72elif Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Tffa657boolTb4b4b4)Tb4b4b4:
Te6edf3_pack_booleanTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Tffa657intTb4b4b4)Tb4b4b4:
Te6edf3_pack_integerTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Tffa657floatTb4b4b4)Tb4b4b4:
Te6edf3_pack_floatTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Te6edf3compatibility Tff7b72and Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Tffa657strTb4b4b4)Tb4b4b4:
Te6edf3_pack_oldspec_rawTb4b4b4(Te6edf3objTff7b72.Td2a8ffencodeTb4b4b4(Ta5d6ff'Ta5d6ffutf-8Ta5d6ff'Tb4b4b4)Tb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Te6edf3compatibility Tff7b72and Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Tffa657bytesTb4b4b4)Tb4b4b4:
Te6edf3_pack_oldspec_rawTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Tffa657strTb4b4b4)Tb4b4b4:
Te6edf3_pack_stringTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Tffa657bytesTb4b4b4)Tb4b4b4:
Te6edf3_pack_binaryTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Tb4b4b4(Tffa657listTb4b4b4, Tffa657tupleTb4b4b4)Tb4b4b4)Tb4b4b4:
Te6edf3_pack_arrayTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4:
Te6edf3_pack_mapTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Te6edf3datetimeTff7b72.Td2a8ffdatetimeTb4b4b4)Tb4b4b4:
Te6edf3_pack_ext_timestampTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Te6edf3ExtTb4b4b4)Tb4b4b4:
Te6edf3_pack_extTb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elif Te6edf3ext_handlersTb4b4b4:
T8b949e# Linear search for superclass
Te6edf3t Tff7b72= Tffa657nextTb4b4b4(Tb4b4b4(Te6edf3t Tff7b72for Te6edf3t Tff7b72in Te6edf3ext_handlersTff7b72.Td2a8ffkeysTb4b4b4(Tb4b4b4) Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Te6edf3tTb4b4b4)Tb4b4b4)Tb4b4b4, Tff7b72NoneTb4b4b4)
Tff7b72if Te6edf3tTb4b4b4:
Te6edf3_pack_extTb4b4b4(Te6edf3ext_handlersTb4b4b4[Te6edf3tTb4b4b4]Tb4b4b4(Te6edf3objTb4b4b4)Tb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72raise Te6edf3UnsupportedTypeExceptionTb4b4b4(
Ta5d6ff"Ta5d6ffunsupported type: Tffd700{:s}Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657strTb4b4b4(Tffa657typeTb4b4b4(Te6edf3objTb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72elif Te6edf3_ext_class_to_typeTb4b4b4:
T8b949e# Linear search for superclass
Te6edf3t Tff7b72= Tffa657nextTb4b4b4(Tb4b4b4(Te6edf3t Tff7b72for Te6edf3t Tff7b72in Te6edf3_ext_class_to_type Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Te6edf3tTb4b4b4)Tb4b4b4)Tb4b4b4, Tff7b72NoneTb4b4b4)
Tff7b72if Te6edf3tTb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3_pack_extTb4b4b4(Te6edf3ExtTb4b4b4(Te6edf3_ext_class_to_typeTb4b4b4[Te6edf3tTb4b4b4]Tb4b4b4, Te6edf3objTff7b72.Td2a8ffpackbTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72except Tf85149AttributeErrorTb4b4b4:
Tff7b72raise Tf85149NotImplementedErrorTb4b4b4(Ta5d6ff"Ta5d6ffExt serializable class Tffd700{:s}Ta5d6ff is missing implementation of packb()Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657reprTb4b4b4(Te6edf3tTb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72raise Te6edf3UnsupportedTypeExceptionTb4b4b4(Ta5d6ff"Ta5d6ffunsupported type: Tffd700{:s}Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657strTb4b4b4(Tffa657typeTb4b4b4(Te6edf3objTb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72raise Te6edf3UnsupportedTypeExceptionTb4b4b4(
Ta5d6ff"Ta5d6ffunsupported type: Tffd700{:s}Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657strTb4b4b4(Tffa657typeTb4b4b4(Te6edf3objTb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72def Td2a8ff_packb2Tb4b4b4(Te6edf3objTb4b4b4, Tff7b72*Tff7b72*Te6edf3optionsTb4b4b4)Tb4b4b4:
T8b949e"""
Serialize a Python object into MessagePack bytes.
Args:
obj: a Python object
Kwargs:
ext_handlers (dict): dictionary of Ext handlers, mapping a custom type
to a callable that packs an instance of the type
into an Ext object
force_float_precision (str): "single" to force packing floats as
IEEE-754 single-precision floats,
"double" to force packing floats as
IEEE-754 double-precision floats.
Returns:
A 'str' containing serialized MessagePack bytes.
Raises:
UnsupportedType(PackException):
Object type not supported for packing.
Example:
>>> umsgpack.packb({u"compact": True, u"schema": 0})
'\x82\xa7compact\xc3\xa6schema\x00'
>>>
"""
Te6edf3fp Tff7b72= Te6edf3ioTff7b72.Td2a8ffBytesIOTb4b4b4(Tb4b4b4)
Te6edf3_pack2Tb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Tff7b72*Tff7b72*Te6edf3optionsTb4b4b4)
Tff7b72return Te6edf3fpTff7b72.Td2a8ffgetvalueTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ff_packb3Tb4b4b4(Te6edf3objTb4b4b4, Tff7b72*Tff7b72*Te6edf3optionsTb4b4b4)Tb4b4b4:
T8b949e"""
Serialize a Python object into MessagePack bytes.
Args:
obj: a Python object
Kwargs:
ext_handlers (dict): dictionary of Ext handlers, mapping a custom type
to a callable that packs an instance of the type
into an Ext object
force_float_precision (str): "single" to force packing floats as
IEEE-754 single-precision floats,
"double" to force packing floats as
IEEE-754 double-precision floats.
Returns:
A 'bytes' containing serialized MessagePack bytes.
Raises:
UnsupportedType(PackException):
Object type not supported for packing.
Example:
>>> umsgpack.packb({u"compact": True, u"schema": 0})
b'\x82\xa7compact\xc3\xa6schema\x00'
>>>
"""
Te6edf3fp Tff7b72= Te6edf3ioTff7b72.Td2a8ffBytesIOTb4b4b4(Tb4b4b4)
Te6edf3_pack3Tb4b4b4(Te6edf3objTb4b4b4, Te6edf3fpTb4b4b4, Tff7b72*Tff7b72*Te6edf3optionsTb4b4b4)
Tff7b72return Te6edf3fpTff7b72.Td2a8ffgetvalueTb4b4b4(Tb4b4b4)
T8b949e#############################################################################
T8b949e# Unpacking
T8b949e#############################################################################
Tff7b72def Td2a8ff_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, Te6edf3nTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3n Tff7b72== T79c0ff0Tb4b4b4:
Tff7b72return Ta5d6ffbTa5d6ff"Ta5d6ff"
Te6edf3data Tff7b72= Te6edf3fpTff7b72.Td2a8ffreadTb4b4b4(Te6edf3nTb4b4b4)
Tff7b72if Tffa657lenTb4b4b4(Te6edf3dataTb4b4b4) Tff7b72== T79c0ff0Tb4b4b4:
Tff7b72raise Te6edf3InsufficientDataExceptionTb4b4b4(Tb4b4b4)
Tff7b72while Tffa657lenTb4b4b4(Te6edf3dataTb4b4b4) Tff7b72< Te6edf3nTb4b4b4:
Te6edf3chunk Tff7b72= Te6edf3fpTff7b72.Td2a8ffreadTb4b4b4(Te6edf3n Tff7b72- Tffa657lenTb4b4b4(Te6edf3dataTb4b4b4)Tb4b4b4)
Tff7b72if Tffa657lenTb4b4b4(Te6edf3chunkTb4b4b4) Tff7b72== T79c0ff0Tb4b4b4:
Tff7b72raise Te6edf3InsufficientDataExceptionTb4b4b4(Tb4b4b4)
Te6edf3data Tff7b72+Tff7b72= Te6edf3chunk
Tff7b72return Te6edf3data
Tff7b72def Td2a8ff_unpack_integerTb4b4b4(Te6edf3codeTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4:
Tff7b72if Tb4b4b4(Tffa657ordTb4b4b4(Te6edf3codeTb4b4b4) Tff7b72& T79c0ff0xe0Tb4b4b4) Tff7b72== T79c0ff0xe0Tb4b4b4:
Tff7b72return Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ffbTa5d6ff"Tb4b4b4, Te6edf3codeTb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xd0Ta5d6ff'Tb4b4b4:
Tff7b72return Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ffbTa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xd1Ta5d6ff'Tb4b4b4:
Tff7b72return Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ff>hTa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff2Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xd2Ta5d6ff'Tb4b4b4:
Tff7b72return Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ff>iTa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff4Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xd3Ta5d6ff'Tb4b4b4:
Tff7b72return Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ff>qTa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff8Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elif Tb4b4b4(Tffa657ordTb4b4b4(Te6edf3codeTb4b4b4) Tff7b72& T79c0ff0x80Tb4b4b4) Tff7b72== T79c0ff0x00Tb4b4b4:
Tff7b72return Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3codeTb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xccTa5d6ff'Tb4b4b4:
Tff7b72return Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xcdTa5d6ff'Tb4b4b4:
Tff7b72return Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ff>HTa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff2Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xceTa5d6ff'Tb4b4b4:
Tff7b72return Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ff>ITa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff4Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xcfTa5d6ff'Tb4b4b4:
Tff7b72return Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ff>QTa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff8Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72raise Tf85149ExceptionTb4b4b4(Ta5d6ff"Ta5d6fflogic error, not int: 0xTffd700{:02x}Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657ordTb4b4b4(Te6edf3codeTb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72def Td2a8ff_unpack_reservedTb4b4b4(Te6edf3codeTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xc1Ta5d6ff'Tb4b4b4:
Tff7b72raise Te6edf3ReservedCodeExceptionTb4b4b4(
Ta5d6ff"Ta5d6ffencountered reserved code: 0xTffd700{:02x}Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657ordTb4b4b4(Te6edf3codeTb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72raise Tf85149ExceptionTb4b4b4(
Ta5d6ff"Ta5d6fflogic error, not reserved code: 0xTffd700{:02x}Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657ordTb4b4b4(Te6edf3codeTb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72def Td2a8ff_unpack_nilTb4b4b4(Te6edf3codeTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xc0Ta5d6ff'Tb4b4b4:
Tff7b72return Tff7b72None
Tff7b72raise Tf85149ExceptionTb4b4b4(Ta5d6ff"Ta5d6fflogic error, not nil: 0xTffd700{:02x}Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657ordTb4b4b4(Te6edf3codeTb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72def Td2a8ff_unpack_booleanTb4b4b4(Te6edf3codeTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xc2Ta5d6ff'Tb4b4b4:
Tff7b72return Tff7b72False
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xc3Ta5d6ff'Tb4b4b4:
Tff7b72return Tff7b72True
Tff7b72raise Tf85149ExceptionTb4b4b4(Ta5d6ff"Ta5d6fflogic error, not boolean: 0xTffd700{:02x}Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657ordTb4b4b4(Te6edf3codeTb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72def Td2a8ff_unpack_floatTb4b4b4(Te6edf3codeTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xcaTa5d6ff'Tb4b4b4:
Tff7b72return Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ff>fTa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff4Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xcbTa5d6ff'Tb4b4b4:
Tff7b72return Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ff>dTa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff8Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72raise Tf85149ExceptionTb4b4b4(Ta5d6ff"Ta5d6fflogic error, not float: 0xTffd700{:02x}Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657ordTb4b4b4(Te6edf3codeTb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72def Td2a8ff_unpack_stringTb4b4b4(Te6edf3codeTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4:
Tff7b72if Tb4b4b4(Tffa657ordTb4b4b4(Te6edf3codeTb4b4b4) Tff7b72& T79c0ff0xe0Tb4b4b4) Tff7b72== T79c0ff0xa0Tb4b4b4:
Te6edf3length Tff7b72= Tffa657ordTb4b4b4(Te6edf3codeTb4b4b4) Tff7b72& Tff7b72~T79c0ff0xe0
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xd9Ta5d6ff'Tb4b4b4:
Te6edf3length Tff7b72= Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xdaTa5d6ff'Tb4b4b4:
Te6edf3length Tff7b72= Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ff>HTa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff2Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xdbTa5d6ff'Tb4b4b4:
Te6edf3length Tff7b72= Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ff>ITa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff4Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elseTb4b4b4:
Tff7b72raise Tf85149ExceptionTb4b4b4(Ta5d6ff"Ta5d6fflogic error, not string: 0xTffd700{:02x}Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657ordTb4b4b4(Te6edf3codeTb4b4b4)Tb4b4b4)Tb4b4b4)
T8b949e# Always return raw bytes in compatibility mode
Tff7b72global Te6edf3compatibility
Tff7b72if Te6edf3compatibilityTb4b4b4:
Tff7b72return Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, Te6edf3lengthTb4b4b4)
Te6edf3data Tff7b72= Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, Te6edf3lengthTb4b4b4)
Tff7b72tryTb4b4b4:
Tff7b72return Tffa657bytesTff7b72.Td2a8ffdecodeTb4b4b4(Te6edf3dataTb4b4b4, Ta5d6ff'Ta5d6ffutf-8Ta5d6ff'Tb4b4b4)
Tff7b72except Tf85149UnicodeDecodeErrorTb4b4b4:
Tff7b72if Te6edf3optionsTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffallow_invalid_utf8Ta5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3InvalidStringTb4b4b4(Te6edf3dataTb4b4b4)
Tff7b72raise Te6edf3InvalidStringExceptionTb4b4b4(Ta5d6ff"Ta5d6ffunpacked string is invalid utf-8Ta5d6ff"Tb4b4b4)
Tff7b72def Td2a8ff_unpack_binaryTb4b4b4(Te6edf3codeTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xc4Ta5d6ff'Tb4b4b4:
Te6edf3length Tff7b72= Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xc5Ta5d6ff'Tb4b4b4:
Te6edf3length Tff7b72= Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ff>HTa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff2Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xc6Ta5d6ff'Tb4b4b4:
Te6edf3length Tff7b72= Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ff>ITa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff4Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elseTb4b4b4:
Tff7b72raise Tf85149ExceptionTb4b4b4(Ta5d6ff"Ta5d6fflogic error, not binary: 0xTffd700{:02x}Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657ordTb4b4b4(Te6edf3codeTb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72return Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, Te6edf3lengthTb4b4b4)
Tff7b72def Td2a8ff_unpack_extTb4b4b4(Te6edf3codeTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xd4Ta5d6ff'Tb4b4b4:
Te6edf3length Tff7b72= T79c0ff1
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xd5Ta5d6ff'Tb4b4b4:
Te6edf3length Tff7b72= T79c0ff2
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xd6Ta5d6ff'Tb4b4b4:
Te6edf3length Tff7b72= T79c0ff4
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xd7Ta5d6ff'Tb4b4b4:
Te6edf3length Tff7b72= T79c0ff8
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xd8Ta5d6ff'Tb4b4b4:
Te6edf3length Tff7b72= T79c0ff16
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xc7Ta5d6ff'Tb4b4b4:
Te6edf3length Tff7b72= Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xc8Ta5d6ff'Tb4b4b4:
Te6edf3length Tff7b72= Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ff>HTa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff2Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xc9Ta5d6ff'Tb4b4b4:
Te6edf3length Tff7b72= Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ff>ITa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff4Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elseTb4b4b4:
Tff7b72raise Tf85149ExceptionTb4b4b4(Ta5d6ff"Ta5d6fflogic error, not ext: 0xTffd700{:02x}Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657ordTb4b4b4(Te6edf3codeTb4b4b4)Tb4b4b4)Tb4b4b4)
Te6edf3ext_type Tff7b72= Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ffbTa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3ext_data Tff7b72= Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, Te6edf3lengthTb4b4b4)
T8b949e# Unpack with ext handler, if we have one
Te6edf3ext_handlers Tff7b72= Te6edf3optionsTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffext_handlersTa5d6ff"Tb4b4b4)
Tff7b72if Te6edf3ext_handlers Tff7b72and Te6edf3ext_type Tff7b72in Te6edf3ext_handlersTb4b4b4:
Tff7b72return Te6edf3ext_handlersTb4b4b4[Te6edf3ext_typeTb4b4b4]Tb4b4b4(Te6edf3ExtTb4b4b4(Te6edf3ext_typeTb4b4b4, Te6edf3ext_dataTb4b4b4)Tb4b4b4)
T8b949e# Unpack with ext classes, if type is registered
Tff7b72if Te6edf3ext_type Tff7b72in Te6edf3_ext_type_to_classTb4b4b4:
Tff7b72tryTb4b4b4:
Tff7b72return Te6edf3_ext_type_to_classTb4b4b4[Te6edf3ext_typeTb4b4b4]Tff7b72.Td2a8ffunpackbTb4b4b4(Te6edf3ext_dataTb4b4b4)
Tff7b72except Tf85149AttributeErrorTb4b4b4:
Tff7b72raise Tf85149NotImplementedErrorTb4b4b4(Ta5d6ff"Ta5d6ffExt serializable class Tffd700{:s}Ta5d6ff is missing implementation of unpackb()Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657reprTb4b4b4(Te6edf3_ext_type_to_classTb4b4b4[Te6edf3ext_typeTb4b4b4]Tb4b4b4)Tb4b4b4)Tb4b4b4)
T8b949e# Timestamp extension
Tff7b72if Te6edf3ext_type Tff7b72== Tff7b72-T79c0ff1Tb4b4b4:
Tff7b72return Te6edf3_unpack_ext_timestampTb4b4b4(Te6edf3ext_dataTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72return Te6edf3ExtTb4b4b4(Te6edf3ext_typeTb4b4b4, Te6edf3ext_dataTb4b4b4)
Tff7b72def Td2a8ff_unpack_ext_timestampTb4b4b4(Te6edf3ext_dataTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4:
Te6edf3obj_len Tff7b72= Tffa657lenTb4b4b4(Te6edf3ext_dataTb4b4b4)
Tff7b72if Te6edf3obj_len Tff7b72== T79c0ff4Tb4b4b4:
T8b949e# 32-bit timestamp
Te6edf3seconds Tff7b72= Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ff>ITa5d6ff"Tb4b4b4, Te6edf3ext_dataTb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3microseconds Tff7b72= T79c0ff0
Tff7b72elif Te6edf3obj_len Tff7b72== T79c0ff8Tb4b4b4:
T8b949e# 64-bit timestamp
Te6edf3value Tff7b72= Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ff>QTa5d6ff"Tb4b4b4, Te6edf3ext_dataTb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3seconds Tff7b72= Te6edf3value Tff7b72& T79c0ff0x3ffffffff
Te6edf3microseconds Tff7b72= Tb4b4b4(Te6edf3value Tff7b72>> T79c0ff34Tb4b4b4) Tff7b72/Tff7b72/ T79c0ff1000
Tff7b72elif Te6edf3obj_len Tff7b72== T79c0ff12Tb4b4b4:
T8b949e# 96-bit timestamp
Te6edf3seconds Tff7b72= Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ff>qTa5d6ff"Tb4b4b4, Te6edf3ext_dataTb4b4b4[T79c0ff4Tb4b4b4:T79c0ff12Tb4b4b4]Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3microseconds Tff7b72= Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ff>ITa5d6ff"Tb4b4b4, Te6edf3ext_dataTb4b4b4[T79c0ff0Tb4b4b4:T79c0ff4Tb4b4b4]Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4] Tff7b72/Tff7b72/ T79c0ff1000
Tff7b72elseTb4b4b4:
Tff7b72raise Te6edf3UnsupportedTimestampExceptionTb4b4b4(
Ta5d6ff"Ta5d6ffunsupported timestamp with data length Tffd700{:d}Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657lenTb4b4b4(Te6edf3ext_dataTb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72return Te6edf3_epoch Tff7b72+ Te6edf3datetimeTff7b72.Td2a8fftimedeltaTb4b4b4(Te6edf3secondsTff7b72=Te6edf3secondsTb4b4b4,
Te6edf3microsecondsTff7b72=Te6edf3microsecondsTb4b4b4)
Tff7b72def Td2a8ff_unpack_arrayTb4b4b4(Te6edf3codeTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4:
Tff7b72if Tb4b4b4(Tffa657ordTb4b4b4(Te6edf3codeTb4b4b4) Tff7b72& T79c0ff0xf0Tb4b4b4) Tff7b72== T79c0ff0x90Tb4b4b4:
Te6edf3length Tff7b72= Tb4b4b4(Tffa657ordTb4b4b4(Te6edf3codeTb4b4b4) Tff7b72& Tff7b72~T79c0ff0xf0Tb4b4b4)
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xdcTa5d6ff'Tb4b4b4:
Te6edf3length Tff7b72= Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ff>HTa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff2Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xddTa5d6ff'Tb4b4b4:
Te6edf3length Tff7b72= Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ff>ITa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff4Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elseTb4b4b4:
Tff7b72raise Tf85149ExceptionTb4b4b4(Ta5d6ff"Ta5d6fflogic error, not array: 0xTffd700{:02x}Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657ordTb4b4b4(Te6edf3codeTb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72if Te6edf3optionsTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff'Ta5d6ffuse_tupleTa5d6ff'Tb4b4b4)Tb4b4b4:
Tff7b72return Tffa657tupleTb4b4b4(Tb4b4b4(Te6edf3_unpackTb4b4b4(Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4) Tff7b72for Te6edf3i Tff7b72in Te6edf3xrangeTb4b4b4(Te6edf3lengthTb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72return Tb4b4b4[Te6edf3_unpackTb4b4b4(Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4) Tff7b72for Te6edf3i Tff7b72in Te6edf3xrangeTb4b4b4(Te6edf3lengthTb4b4b4)Tb4b4b4]
Tff7b72def Td2a8ff_deep_list_to_tupleTb4b4b4(Te6edf3objTb4b4b4)Tb4b4b4:
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Tffa657listTb4b4b4)Tb4b4b4:
Tff7b72return Tffa657tupleTb4b4b4(Tb4b4b4[Te6edf3_deep_list_to_tupleTb4b4b4(Te6edf3eTb4b4b4) Tff7b72for Te6edf3e Tff7b72in Te6edf3objTb4b4b4]Tb4b4b4)
Tff7b72return Te6edf3obj
Tff7b72def Td2a8ff_unpack_mapTb4b4b4(Te6edf3codeTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4:
Tff7b72if Tb4b4b4(Tffa657ordTb4b4b4(Te6edf3codeTb4b4b4) Tff7b72& T79c0ff0xf0Tb4b4b4) Tff7b72== T79c0ff0x80Tb4b4b4:
Te6edf3length Tff7b72= Tb4b4b4(Tffa657ordTb4b4b4(Te6edf3codeTb4b4b4) Tff7b72& Tff7b72~T79c0ff0xf0Tb4b4b4)
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xdeTa5d6ff'Tb4b4b4:
Te6edf3length Tff7b72= Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ff>HTa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff2Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elif Te6edf3code Tff7b72== Ta5d6ffbTa5d6ff'Tffea00\xdfTa5d6ff'Tb4b4b4:
Te6edf3length Tff7b72= Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff"Ta5d6ff>ITa5d6ff"Tb4b4b4, Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff4Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72elseTb4b4b4:
Tff7b72raise Tf85149ExceptionTb4b4b4(Ta5d6ff"Ta5d6fflogic error, not map: 0xTffd700{:02x}Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657ordTb4b4b4(Te6edf3codeTb4b4b4)Tb4b4b4)Tb4b4b4)
Te6edf3d Tff7b72= Tb4b4b4{Tb4b4b4} Tff7b72if Tff7b72not Te6edf3optionsTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff'Ta5d6ffuse_ordered_dictTa5d6ff'Tb4b4b4) Tff7b72else Te6edf3collectionsTff7b72.Td2a8ffOrderedDictTb4b4b4(Tb4b4b4)
Tff7b72for Te6edf3_ Tff7b72in Te6edf3xrangeTb4b4b4(Te6edf3lengthTb4b4b4)Tb4b4b4:
T8b949e# Unpack key
Te6edf3k Tff7b72= Te6edf3_unpackTb4b4b4(Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3kTb4b4b4, Tffa657listTb4b4b4)Tb4b4b4:
T8b949e# Attempt to convert list into a hashable tuple
Te6edf3k Tff7b72= Te6edf3_deep_list_to_tupleTb4b4b4(Te6edf3kTb4b4b4)
Tff7b72elif Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3kTb4b4b4, Te6edf3HashableTb4b4b4)Tb4b4b4:
Tff7b72raise Te6edf3UnhashableKeyExceptionTb4b4b4(
Ta5d6ff"Ta5d6ffencountered unhashable key: Tffea00\"Tffd700{:s}Tffea00\"Ta5d6ff (Tffd700{:s}Ta5d6ff)Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657strTb4b4b4(Te6edf3kTb4b4b4)Tb4b4b4, Tffa657strTb4b4b4(Tffa657typeTb4b4b4(Te6edf3kTb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72elif Te6edf3k Tff7b72in Te6edf3dTb4b4b4:
Tff7b72raise Te6edf3DuplicateKeyExceptionTb4b4b4(
Ta5d6ff"Ta5d6ffencountered duplicate key: Tffea00\"Tffd700{:s}Tffea00\"Ta5d6ff (Tffd700{:s}Ta5d6ff)Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657strTb4b4b4(Te6edf3kTb4b4b4)Tb4b4b4, Tffa657strTb4b4b4(Tffa657typeTb4b4b4(Te6edf3kTb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4)
T8b949e# Unpack value
Te6edf3v Tff7b72= Te6edf3_unpackTb4b4b4(Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72tryTb4b4b4:
Te6edf3dTb4b4b4[Te6edf3kTb4b4b4] Tff7b72= Te6edf3v
Tff7b72except Tf85149TypeErrorTb4b4b4:
Tff7b72raise Te6edf3UnhashableKeyExceptionTb4b4b4(
Ta5d6ff"Ta5d6ffencountered unhashable key: Tffea00\"Tffd700{:s}Tffea00\"Ta5d6ff"Tff7b72.Td2a8ffformatTb4b4b4(Tffa657strTb4b4b4(Te6edf3kTb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72return Te6edf3d
Tff7b72def Td2a8ff_unpackTb4b4b4(Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)Tb4b4b4:
Te6edf3code Tff7b72= Te6edf3_read_exceptTb4b4b4(Te6edf3fpTb4b4b4, T79c0ff1Tb4b4b4)
Tff7b72return Te6edf3_unpack_dispatch_tableTb4b4b4[Te6edf3codeTb4b4b4]Tb4b4b4(Te6edf3codeTb4b4b4, Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
T8b949e########################################
Tff7b72def Td2a8ff_unpack2Tb4b4b4(Te6edf3fpTb4b4b4, Tff7b72*Tff7b72*Te6edf3optionsTb4b4b4)Tb4b4b4:
T8b949e"""
Deserialize MessagePack bytes into a Python object.
Args:
fp: a .read()-supporting file-like object
Kwargs:
ext_handlers (dict): dictionary of Ext handlers, mapping integer Ext
type to a callable that unpacks an instance of
Ext into an object
use_ordered_dict (bool): unpack maps into OrderedDict, instead of
unordered dict (default False)
use_tuple (bool): unpacks arrays into tuples, instead of lists (default
False)
allow_invalid_utf8 (bool): unpack invalid strings into instances of
InvalidString, for access to the bytes
(default False)
Returns:
A Python object.
Raises:
InsufficientDataException(UnpackException):
Insufficient data to unpack the serialized object.
InvalidStringException(UnpackException):
Invalid UTF-8 string encountered during unpacking.
UnsupportedTimestampException(UnpackException):
Unsupported timestamp format encountered during unpacking.
ReservedCodeException(UnpackException):
Reserved code encountered during unpacking.
UnhashableKeyException(UnpackException):
Unhashable key encountered during map unpacking.
The serialized map cannot be deserialized into a Python dictionary.
DuplicateKeyException(UnpackException):
Duplicate key encountered during map unpacking.
Example:
>>> f = open('test.bin', 'rb')
>>> umsgpack.unpackb(f)
{u'compact': True, u'schema': 0}
>>>
"""
Tff7b72return Te6edf3_unpackTb4b4b4(Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72def Td2a8ff_unpack3Tb4b4b4(Te6edf3fpTb4b4b4, Tff7b72*Tff7b72*Te6edf3optionsTb4b4b4)Tb4b4b4:
T8b949e"""
Deserialize MessagePack bytes into a Python object.
Args:
fp: a .read()-supporting file-like object
Kwargs:
ext_handlers (dict): dictionary of Ext handlers, mapping integer Ext
type to a callable that unpacks an instance of
Ext into an object
use_ordered_dict (bool): unpack maps into OrderedDict, instead of
unordered dict (default False)
use_tuple (bool): unpacks arrays into tuples, instead of lists (default
False)
allow_invalid_utf8 (bool): unpack invalid strings into instances of
InvalidString, for access to the bytes
(default False)
Returns:
A Python object.
Raises:
InsufficientDataException(UnpackException):
Insufficient data to unpack the serialized object.
InvalidStringException(UnpackException):
Invalid UTF-8 string encountered during unpacking.
UnsupportedTimestampException(UnpackException):
Unsupported timestamp format encountered during unpacking.
ReservedCodeException(UnpackException):
Reserved code encountered during unpacking.
UnhashableKeyException(UnpackException):
Unhashable key encountered during map unpacking.
The serialized map cannot be deserialized into a Python dictionary.
DuplicateKeyException(UnpackException):
Duplicate key encountered during map unpacking.
Example:
>>> f = open('test.bin', 'rb')
>>> umsgpack.unpackb(f)
{'compact': True, 'schema': 0}
>>>
"""
Tff7b72return Te6edf3_unpackTb4b4b4(Te6edf3fpTb4b4b4, Te6edf3optionsTb4b4b4)
T8b949e# For Python 2, expects a str object
Tff7b72def Td2a8ff_unpackb2Tb4b4b4(Te6edf3sTb4b4b4, Tff7b72*Tff7b72*Te6edf3optionsTb4b4b4)Tb4b4b4:
T8b949e"""
Deserialize MessagePack bytes into a Python object.
Args:
s: a 'str' or 'bytearray' containing serialized MessagePack bytes
Kwargs:
ext_handlers (dict): dictionary of Ext handlers, mapping integer Ext
type to a callable that unpacks an instance of
Ext into an object
use_ordered_dict (bool): unpack maps into OrderedDict, instead of
unordered dict (default False)
use_tuple (bool): unpacks arrays into tuples, instead of lists (default
False)
allow_invalid_utf8 (bool): unpack invalid strings into instances of
InvalidString, for access to the bytes
(default False)
Returns:
A Python object.
Raises:
TypeError:
Packed data type is neither 'str' nor 'bytearray'.
InsufficientDataException(UnpackException):
Insufficient data to unpack the serialized object.
InvalidStringException(UnpackException):
Invalid UTF-8 string encountered during unpacking.
UnsupportedTimestampException(UnpackException):
Unsupported timestamp format encountered during unpacking.
ReservedCodeException(UnpackException):
Reserved code encountered during unpacking.
UnhashableKeyException(UnpackException):
Unhashable key encountered during map unpacking.
The serialized map cannot be deserialized into a Python dictionary.
DuplicateKeyException(UnpackException):
Duplicate key encountered during map unpacking.
Example:
>>> umsgpack.unpackb(b'\x82\xa7compact\xc3\xa6schema\x00')
{u'compact': True, u'schema': 0}
>>>
"""
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3sTb4b4b4, Tb4b4b4(Tffa657strTb4b4b4, Tffa657bytearrayTb4b4b4)Tb4b4b4)Tb4b4b4:
Tff7b72raise Tf85149TypeErrorTb4b4b4(Ta5d6ff"Ta5d6ffpacked data must be type Ta5d6ff'Ta5d6ffstrTa5d6ff'Ta5d6ff or Ta5d6ff'Ta5d6ffbytearrayTa5d6ff'Ta5d6ff"Tb4b4b4)
Tff7b72return Te6edf3_unpackTb4b4b4(Te6edf3ioTff7b72.Td2a8ffBytesIOTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4, Te6edf3optionsTb4b4b4)
T8b949e# For Python 3, expects a bytes object
Tff7b72def Td2a8ff_unpackb3Tb4b4b4(Te6edf3sTb4b4b4, Tff7b72*Tff7b72*Te6edf3optionsTb4b4b4)Tb4b4b4:
T8b949e"""
Deserialize MessagePack bytes into a Python object.
Args:
s: a 'bytes' or 'bytearray' containing serialized MessagePack bytes
Kwargs:
ext_handlers (dict): dictionary of Ext handlers, mapping integer Ext
type to a callable that unpacks an instance of
Ext into an object
use_ordered_dict (bool): unpack maps into OrderedDict, instead of
unordered dict (default False)
use_tuple (bool): unpacks arrays into tuples, instead of lists (default
False)
allow_invalid_utf8 (bool): unpack invalid strings into instances of
InvalidString, for access to the bytes
(default False)
Returns:
A Python object.
Raises:
TypeError:
Packed data type is neither 'bytes' nor 'bytearray'.
InsufficientDataException(UnpackException):
Insufficient data to unpack the serialized object.
InvalidStringException(UnpackException):
Invalid UTF-8 string encountered during unpacking.
UnsupportedTimestampException(UnpackException):
Unsupported timestamp format encountered during unpacking.
ReservedCodeException(UnpackException):
Reserved code encountered during unpacking.
UnhashableKeyException(UnpackException):
Unhashable key encountered during map unpacking.
The serialized map cannot be deserialized into a Python dictionary.
DuplicateKeyException(UnpackException):
Duplicate key encountered during map unpacking.
Example:
>>> umsgpack.unpackb(b'\x82\xa7compact\xc3\xa6schema\x00')
{'compact': True, 'schema': 0}
>>>
"""
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3sTb4b4b4, Tb4b4b4(Tffa657bytesTb4b4b4, Tffa657bytearrayTb4b4b4)Tb4b4b4)Tb4b4b4:
Tff7b72raise Tf85149TypeErrorTb4b4b4(Ta5d6ff"Ta5d6ffpacked data must be type Ta5d6ff'Ta5d6ffbytesTa5d6ff'Ta5d6ff or Ta5d6ff'Ta5d6ffbytearrayTa5d6ff'Ta5d6ff"Tb4b4b4)
Tff7b72return Te6edf3_unpackTb4b4b4(Te6edf3ioTff7b72.Td2a8ffBytesIOTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4, Te6edf3optionsTb4b4b4)
T8b949e#############################################################################
T8b949e# Module Initialization
T8b949e#############################################################################
Tff7b72def Td2a8ff__initTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72global Te6edf3pack
Tff7b72global Te6edf3packb
Tff7b72global Te6edf3unpack
Tff7b72global Te6edf3unpackb
Tff7b72global Te6edf3dump
Tff7b72global Te6edf3dumps
Tff7b72global Te6edf3load
Tff7b72global Te6edf3loads
Tff7b72global Te6edf3compatibility
Tff7b72global Te6edf3_epoch
Tff7b72global Te6edf3_utc_tzinfo
Tff7b72global Te6edf3_float_precision
Tff7b72global Te6edf3_unpack_dispatch_table
Tff7b72global Te6edf3xrange
T8b949e# Compatibility mode for handling strings/bytes with the old specification
Te6edf3compatibility Tff7b72= Tff7b72False
Tff7b72if Te6edf3sysTff7b72.Td2a8ffversion_infoTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72== T79c0ff3Tb4b4b4:
Te6edf3_utc_tzinfo Tff7b72= Te6edf3datetimeTff7b72.Td2a8fftimezoneTff7b72.Td2a8ffutc
Tff7b72elseTb4b4b4:
Tff7b72class T56d364UTCTb4b4b4(Te6edf3datetimeTff7b72.Td2a8fftzinfoTb4b4b4)Tb4b4b4:
Te6edf3ZERO Tff7b72= Te6edf3datetimeTff7b72.Td2a8fftimedeltaTb4b4b4(T79c0ff0Tb4b4b4)
Tff7b72def Td2a8ffutcoffsetTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3dtTb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3UTCTff7b72.Td2a8ffZERO
Tff7b72def Td2a8fftznameTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3dtTb4b4b4)Tb4b4b4:
Tff7b72return Ta5d6ff"Ta5d6ffUTCTa5d6ff"
Tff7b72def Td2a8ffdstTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3dtTb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3UTCTff7b72.Td2a8ffZERO
Te6edf3_utc_tzinfo Tff7b72= Te6edf3UTCTb4b4b4(Tb4b4b4)
T8b949e# Calculate an aware epoch datetime
Te6edf3_epoch Tff7b72= Te6edf3datetimeTff7b72.Td2a8ffdatetimeTb4b4b4(T79c0ff1970Tb4b4b4, T79c0ff1Tb4b4b4, T79c0ff1Tb4b4b4, Te6edf3tzinfoTff7b72=Te6edf3_utc_tzinfoTb4b4b4)
T8b949e# Auto-detect system float precision
Tff7b72if Te6edf3sysTff7b72.Td2a8fffloat_infoTff7b72.Td2a8ffmant_dig Tff7b72== T79c0ff53Tb4b4b4:
Te6edf3_float_precision Tff7b72= Ta5d6ff"Ta5d6ffdoubleTa5d6ff"
Tff7b72elseTb4b4b4:
Te6edf3_float_precision Tff7b72= Ta5d6ff"Ta5d6ffsingleTa5d6ff"
T8b949e# Map packb and unpackb to the appropriate version
Tff7b72if Te6edf3sysTff7b72.Td2a8ffversion_infoTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72== T79c0ff3Tb4b4b4:
Te6edf3pack Tff7b72= Te6edf3_pack3
Te6edf3packb Tff7b72= Te6edf3_packb3
Te6edf3dump Tff7b72= Te6edf3_pack3
Te6edf3dumps Tff7b72= Te6edf3_packb3
Te6edf3unpack Tff7b72= Te6edf3_unpack3
Te6edf3unpackb Tff7b72= Te6edf3_unpackb3
Te6edf3load Tff7b72= Te6edf3_unpack3
Te6edf3loads Tff7b72= Te6edf3_unpackb3
Te6edf3xrange Tff7b72= Tffa657range
Tff7b72elseTb4b4b4:
Te6edf3pack Tff7b72= Te6edf3_pack2
Te6edf3packb Tff7b72= Te6edf3_packb2
Te6edf3dump Tff7b72= Te6edf3_pack2
Te6edf3dumps Tff7b72= Te6edf3_packb2
Te6edf3unpack Tff7b72= Te6edf3_unpack2
Te6edf3unpackb Tff7b72= Te6edf3_unpackb2
Te6edf3load Tff7b72= Te6edf3_unpack2
Te6edf3loads Tff7b72= Te6edf3_unpackb2
T8b949e# Build a dispatch table for fast lookup of unpacking function
Te6edf3_unpack_dispatch_table Tff7b72= Tb4b4b4{Tb4b4b4}
T8b949e# Fix uint
Tff7b72for Te6edf3code Tff7b72in Tffa657rangeTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0x7f Tff7b72+ T79c0ff1Tb4b4b4)Tb4b4b4:
Te6edf3_unpack_dispatch_tableTb4b4b4[Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3codeTb4b4b4)Tb4b4b4] Tff7b72= Te6edf3_unpack_integer
T8b949e# Fix map
Tff7b72for Te6edf3code Tff7b72in Tffa657rangeTb4b4b4(T79c0ff0x80Tb4b4b4, T79c0ff0x8f Tff7b72+ T79c0ff1Tb4b4b4)Tb4b4b4:
Te6edf3_unpack_dispatch_tableTb4b4b4[Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3codeTb4b4b4)Tb4b4b4] Tff7b72= Te6edf3_unpack_map
T8b949e# Fix array
Tff7b72for Te6edf3code Tff7b72in Tffa657rangeTb4b4b4(T79c0ff0x90Tb4b4b4, T79c0ff0x9f Tff7b72+ T79c0ff1Tb4b4b4)Tb4b4b4:
Te6edf3_unpack_dispatch_tableTb4b4b4[Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3codeTb4b4b4)Tb4b4b4] Tff7b72= Te6edf3_unpack_array
T8b949e# Fix str
Tff7b72for Te6edf3code Tff7b72in Tffa657rangeTb4b4b4(T79c0ff0xa0Tb4b4b4, T79c0ff0xbf Tff7b72+ T79c0ff1Tb4b4b4)Tb4b4b4:
Te6edf3_unpack_dispatch_tableTb4b4b4[Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3codeTb4b4b4)Tb4b4b4] Tff7b72= Te6edf3_unpack_string
T8b949e# Nil
Te6edf3_unpack_dispatch_tableTb4b4b4[Ta5d6ffbTa5d6ff'Tffea00\xc0Ta5d6ff'Tb4b4b4] Tff7b72= Te6edf3_unpack_nil
T8b949e# Reserved
Te6edf3_unpack_dispatch_tableTb4b4b4[Ta5d6ffbTa5d6ff'Tffea00\xc1Ta5d6ff'Tb4b4b4] Tff7b72= Te6edf3_unpack_reserved
T8b949e# Boolean
Te6edf3_unpack_dispatch_tableTb4b4b4[Ta5d6ffbTa5d6ff'Tffea00\xc2Ta5d6ff'Tb4b4b4] Tff7b72= Te6edf3_unpack_boolean
Te6edf3_unpack_dispatch_tableTb4b4b4[Ta5d6ffbTa5d6ff'Tffea00\xc3Ta5d6ff'Tb4b4b4] Tff7b72= Te6edf3_unpack_boolean
T8b949e# Bin
Tff7b72for Te6edf3code Tff7b72in Tffa657rangeTb4b4b4(T79c0ff0xc4Tb4b4b4, T79c0ff0xc6 Tff7b72+ T79c0ff1Tb4b4b4)Tb4b4b4:
Te6edf3_unpack_dispatch_tableTb4b4b4[Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3codeTb4b4b4)Tb4b4b4] Tff7b72= Te6edf3_unpack_binary
T8b949e# Ext
Tff7b72for Te6edf3code Tff7b72in Tffa657rangeTb4b4b4(T79c0ff0xc7Tb4b4b4, T79c0ff0xc9 Tff7b72+ T79c0ff1Tb4b4b4)Tb4b4b4:
Te6edf3_unpack_dispatch_tableTb4b4b4[Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3codeTb4b4b4)Tb4b4b4] Tff7b72= Te6edf3_unpack_ext
T8b949e# Float
Te6edf3_unpack_dispatch_tableTb4b4b4[Ta5d6ffbTa5d6ff'Tffea00\xcaTa5d6ff'Tb4b4b4] Tff7b72= Te6edf3_unpack_float
Te6edf3_unpack_dispatch_tableTb4b4b4[Ta5d6ffbTa5d6ff'Tffea00\xcbTa5d6ff'Tb4b4b4] Tff7b72= Te6edf3_unpack_float
T8b949e# Uint
Tff7b72for Te6edf3code Tff7b72in Tffa657rangeTb4b4b4(T79c0ff0xccTb4b4b4, T79c0ff0xcf Tff7b72+ T79c0ff1Tb4b4b4)Tb4b4b4:
Te6edf3_unpack_dispatch_tableTb4b4b4[Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3codeTb4b4b4)Tb4b4b4] Tff7b72= Te6edf3_unpack_integer
T8b949e# Int
Tff7b72for Te6edf3code Tff7b72in Tffa657rangeTb4b4b4(T79c0ff0xd0Tb4b4b4, T79c0ff0xd3 Tff7b72+ T79c0ff1Tb4b4b4)Tb4b4b4:
Te6edf3_unpack_dispatch_tableTb4b4b4[Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3codeTb4b4b4)Tb4b4b4] Tff7b72= Te6edf3_unpack_integer
T8b949e# Fixext
Tff7b72for Te6edf3code Tff7b72in Tffa657rangeTb4b4b4(T79c0ff0xd4Tb4b4b4, T79c0ff0xd8 Tff7b72+ T79c0ff1Tb4b4b4)Tb4b4b4:
Te6edf3_unpack_dispatch_tableTb4b4b4[Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3codeTb4b4b4)Tb4b4b4] Tff7b72= Te6edf3_unpack_ext
T8b949e# String
Tff7b72for Te6edf3code Tff7b72in Tffa657rangeTb4b4b4(T79c0ff0xd9Tb4b4b4, T79c0ff0xdb Tff7b72+ T79c0ff1Tb4b4b4)Tb4b4b4:
Te6edf3_unpack_dispatch_tableTb4b4b4[Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3codeTb4b4b4)Tb4b4b4] Tff7b72= Te6edf3_unpack_string
T8b949e# Array
Te6edf3_unpack_dispatch_tableTb4b4b4[Ta5d6ffbTa5d6ff'Tffea00\xdcTa5d6ff'Tb4b4b4] Tff7b72= Te6edf3_unpack_array
Te6edf3_unpack_dispatch_tableTb4b4b4[Ta5d6ffbTa5d6ff'Tffea00\xddTa5d6ff'Tb4b4b4] Tff7b72= Te6edf3_unpack_array
T8b949e# Map
Te6edf3_unpack_dispatch_tableTb4b4b4[Ta5d6ffbTa5d6ff'Tffea00\xdeTa5d6ff'Tb4b4b4] Tff7b72= Te6edf3_unpack_map
Te6edf3_unpack_dispatch_tableTb4b4b4[Ta5d6ffbTa5d6ff'Tffea00\xdfTa5d6ff'Tb4b4b4] Tff7b72= Te6edf3_unpack_map
T8b949e# Negative fixint
Tff7b72for Te6edf3code Tff7b72in Tffa657rangeTb4b4b4(T79c0ff0xe0Tb4b4b4, T79c0ff0xff Tff7b72+ T79c0ff1Tb4b4b4)Tb4b4b4:
Te6edf3_unpack_dispatch_tableTb4b4b4[Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4, Te6edf3codeTb4b4b4)Tb4b4b4] Tff7b72= Te6edf3_unpack_integer
Te6edf3__initTb4b4b4(Tb4b4b4)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────